package com.etalk.crm.service;

import com.etalk.crm.pojo.*;
import com.github.pagehelper.PageInfo;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * @Auther: James
 * @Date: 2019/1/29 10:42
 * @Description:
 */
public interface StuDynamicService {
    /*
	 * @Author James
	 * @Description //TODO
	 * @Date 11:51 2019/1/29
	 * @Param
	 * @return
	 **/
	int updateLessonsUptime(Person person);

    /**
     * @Author James
     * @Description
     * @Date 12:24 2019/1/29
     * @Param
     * @return
     **/
	int addStudentDynamics(StudentDynamics studentDynamics, int attrId, Date remindTime, int userId, int sscCCId);

    /**
     * @Author Terwer
     * @Description
     * @Date 12:24 2019/5/20
     * @Param
     * @return
     **/
    int addSimpleStudentDynamics(StudentDynamics studentDynamics);

	/**
	 * 钻石学员跟进标记，已有修改，没有插入
	 * @param record 数据
	 * @return
	 */
	@Transactional(rollbackFor=Exception.class)
	int updateStudentFollow(StudentFollow record);

	/**
     * 添加提醒
     * @param personId
     * @param attrId
     * @param remindTime
     * @param userId
     * @param sscCCId
     * @param studentDynamicsId
     * @return
     */
	int addTrackRemind(int personId, int attrId, Date remindTime, int userId, int sscCCId, int studentDynamicsId);

	 /**
     * 添加动态附件信息
     *
     * @param attachmentPreviewIds
     * @param attachmentUrls
     * @param dynamicsId
     * @return
     */
    int insertInfoDynamicsAttachments(List<String> attachmentPreviewIds, List<String> attachmentUrls, int dynamicsId);

	/**
	 * 添加pcp生成图片记录
	 * @param personId 学员id
	 * @param imgUrl 图片路径
	 * @param creator 创建者
	 * @return 记录数
	 */
	@Transactional(rollbackFor=Exception.class)
	int addStudentPcpRecord(int personId, String imgUrl, String creator);

	/**
     * 保存是否线下店上demo的值
     */

    int updateClassStoresById(int id,Integer classStores);

    /**
     * 查询该学生最后一次动态跟踪状态
     *
     * @param personId
     * @return
     */
    Integer selectLastRevisitStatus(int personId);

    /**
     * 撤销动态
     *
     * @param dynamicsId
     * @return
     */
    int deleteDynamics(int dynamicsId);

    /**
	 * 修改动态为完成状态
	 * @param id
	 * @param state
	 * @return
	 */
	int modifyTrackRemindState(int id, Integer state);

	/**
	 * 分页查询动态记录
	 * @param personId 学员id
	 * @param page 当前页
	 * @param pageSize 每页记录数
	 * @return
	 */
	PageInfo selectTrackRemindByBccId(int personId, Integer page, Integer pageSize);

	/*
	 * @Author James
	 * @Description cc ssc 学员信息
	 * @Date 18:42 2019/1/29
	 * @Param
	 * @return
	 **/
	StudentInfo selectCcSsc(int personId);

	/*
	 * @Author James
	 * @Description 学员客户父级属性
	 * @Date 18:57 2019/1/29
	 * @Param
	 * @return
	 **/
	List<GradeLevel>selectAllRevisit(int state,int roleId);

    /*
     * @Author Terwer
     * @Description 学员客户父级属性之外的扩展属性
     * @Date 18:57 2019/1/29
     * @Param
     * @return
     **/
    List<GradeLevel> selectAllExtRevisit(int state,int roleId);

	/*
	 * @Author James
	 * @Description 删除常用老师
	 * @Date 16:44 2019/2/13
	 * @Param
	 * @return
	 **/
	int delTeacher(int delTeacher,int personId);

	/**
     * 查询某个学生当天的提醒数目
     *
     * @param userId   当前登录人的ID
     * @param remindDate 提醒日期
     * @return 当天的提醒数目
     */
	Integer selectRemindCount(Integer userId, String remindDate);
}
